package com.ruoyi.business.service;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.ruoyi.business.domain.BpmnInfo;
import org.springframework.web.multipart.MultipartFile;

/**
 * 流程定义明细Service接口
 *
 * @author ruoyi
 * @date 2022-02-09
 */
public interface IBpmnInfoService {
    /**
     * 查询流程定义明细
     *
     * @param id 流程定义明细主键
     * @return 流程定义明细
     */
    public BpmnInfo selectBpmnInfoById(Long id);

    /**
     * 查询流程定义明细列表
     *
     * @param bpmnInfo 流程定义明细
     * @return 流程定义明细集合
     */
    public List<BpmnInfo> selectBpmnInfoList(BpmnInfo bpmnInfo);

    /**
     * 新增流程定义明细
     *
     * @param bpmnInfo 流程定义明细
     * @return 结果
     */
    public int insertBpmnInfo(BpmnInfo bpmnInfo);

    /**
     * 修改流程定义明细
     *
     * @param bpmnInfo 流程定义明细
     * @return 结果
     */
    public int updateBpmnInfo(BpmnInfo bpmnInfo);

    /**
     * 批量删除流程定义明细
     *
     * @param ids 需要删除的流程定义明细主键集合
     * @return 结果
     */
    public int deleteBpmnInfoByIds(String ids);

    /**
     * 删除流程定义明细信息
     *
     * @param id 流程定义明细主键
     * @return 结果
     */
    public int deleteBpmnInfoById(Long id);

    /**
     *bpmn文件上传和校验
     * @param file 文件存储对象
     * @return 返回路径
     */
    String upload(MultipartFile file) throws IOException;

    /**
     * 流程信息的提交
     * @param path 上传文件的路径
     * @param bpmnType 流程图的类型
     * @param info 备注信息
     */
    void deploy(String path, String bpmnType, String info) throws IOException;

    /**
     *
     * @param id 流程id
     */
    void delete(Long id);

    /**
     * 根据部署id 和 类型查询 内容
     * @param deploymentId 部署流程id
     * @param type 类型
     * @return 返回内容流
     */
    InputStream getResoucceByType(String deploymentId, String type);

    /**
     * 根据类型查找数据
     * @param car_package 类型
     * @return 返回符合单个类型的数据
     */
    BpmnInfo getByBpmnType(String car_package);
}
